#include <iostream>
using namespace std;

struct BiTreeNode{
    int data;
    struct BiTreeNode *lchild,*rchild;
};

typedef struct BiTreeNode BiTreeNode;
typedef struct BiTreeNode *BiTree;

void initBiTree(BiTree *biTree){
    (*biTree)->data = 9;
    (*biTree)->lchild = NULL;
    (*biTree)->rchild = NULL;
}

void addDataToBiTree(BiTree *biTree,int value){

    if (!(*biTree)){
        BiTree newNode = (BiTree)malloc(sizeof(BiTreeNode));
        newNode->data = value;
        newNode->lchild = newNode->rchild = NULL;
        (*biTree) = newNode;
        return;
    }
    if ((*biTree)->data>value){
        addDataToBiTree(&(*biTree)->lchild,value);
    }
    else if((*biTree)->data<value){
        addDataToBiTree(&(*biTree)->rchild,value);
    }
}
//递归
void printBiTree(BiTree T){
    if (T == NULL){
        return;
    }
    cout<<T->data<<endl;
    printBiTree(T->lchild);
    printBiTree(T->rchild);
}


int main(){
    BiTree biTree = (BiTree)malloc(sizeof(BiTreeNode));
    initBiTree(&biTree);
    addDataToBiTree(&biTree,10);
    addDataToBiTree(&biTree,7);
    addDataToBiTree(&biTree,5);
    addDataToBiTree(&biTree,12);
    printBiTree(biTree);
    return 1;
}

